package dancereal;

public class J02_Operator {

	// 연산자 operator
	// 컴퓨터 프로그램은
	// 특정 기능을 수행할 작업들로 구성됨
	// 연산자는 이러한 작업을 표현하는 기호
	// 작업에는 더하기,빼기,곱하기,나누기,
	// 비트 이동 등이 있음
	// 연산자는 한/두/세 개의 피 연산자에서
	// 작업을 수행함
	// 피 연산자 operand 는 작업의 대상을 의미
	
	
	
	
	
	
	
	
	public static void main(String[] args) {
		
	//1. 단항 연산자 : ++,--,!
	int val1 = 10;
	int val2 = ++val1;  //val1 = val1 + 1;(증가연산자)
	int val3 = --val1;  //val1 = val1 - 1;(감소연산자)
	boolean isMarried = true;
    
	
	//2. 산술 연산자 : +,-,*,/,%
    int op1 = 300;	
    int op2 = 125;
    int op3 = 123;
    int op4 = 23;
    
	int plus = op1 + op2;
	int sub = op1 - op2;
	int mul = op1 * op2;
	int div1 = op1 / op2;
	// 정수를 정수로 나누면 결과도 정수
	// int div2 = op1 / (float) op2;
	// 실수를 정수로 나누면 결과는 실수
	// 수식의 결과 유형과 그것을 저장하는
	// 변수의 유형은 일치해야 함
	float div2 = op1 /(float) op2;
    float div3 = op3 /(float) op4;
    double div4 = op3 /(float) op4;
    double div5 = op3 /(double) op4;
    // 실수 형변환에 따라 
    // 미세한 오차가 발생할 수도 있음
    // Math 클래스를 이용하면 오차를 줄일 수 있음
	int mod = op1 % op2;
	
	
	//3.관계/동등 연산자 : >,<,>=,<=,==,!=
	boolean rel1 = 100 > 150;
	boolean rel2 = 100 < 150;
	boolean rel3 = 100 >= 100;
	boolean rel4 = 100 <= 100;
	boolean rel5 = op1 == op2;
	boolean rel6 = op3 != op4;
	
	
	//4.조건 연산자 : AND,OR,&&,||,!,?:
	//boolean cond1 = (100 > 150)&&(op1 == op2);
	// short-circuit 연산
	// 조건 연산 처리시 첫째 항의 연산 결과로 의해
	// 전체 수식의 결과를 바로 알 수 있는 경우
	// 나머지 항의 수식은 연산하지 않음
	boolean cond2 = (op1 == op2)&&(100 > 150);
	boolean cond3 = (100 > 150)||(op1 > op2);
	char cond4 = (op1 == op2) ? '정' : '오';
	// 삼항 연산자 ? : 
	// 형식은 (조건식)?참일때 처리:거짓일때 처리 
	
	//5.대입 연산자 : =,+=,-=,*=,/=,%=
	int assg1 = 100;    
	int assg2 = 110;    
	int assg3 = 170;
	int assg4 = 220;	
	int assg5 = 360;
	
	
	assg1 += 200;  // assg1 = assg1 + 200;
	assg2 -= 200;  // assg2 = assg2 - 200;
	assg3 *= 200;  // assg3 = assg3 & 200;
	assg4 /= 75;   // assg4 = assg4 / 75;
	assg5 %= 75;   // assg5 = assg5 % 75;
	
   		
	
	// 결과출력
	System.out.println(val2);
	System.out.println(val1);
	System.out.println(val3);
	System.out.println(!isMarried);
	System.out.println(plus);
	System.out.println(sub);
	System.out.println(mul);
	System.out.println(div1);
	System.out.println(mod);
	System.out.println(div2);
	System.out.println(div3);
	System.out.println(div4);
	System.out.println(div5);
	System.out.println(rel1);
	System.out.println(rel2);
	System.out.println(rel3);
	System.out.println(rel4);
	System.out.println(rel5);
	System.out.println(rel6);
//	System.out.println(cond1);
	System.out.println(cond2);
	System.out.println(cond3);
	System.out.println(cond4);
	System.out.println(assg1);
	System.out.println(assg2);
	System.out.println(assg3);
	System.out.println(assg4);
	System.out.println(assg5);
	
	
	
	
	
	
	
		
		
		
		
		
}
}
